
-- KEYS[1]: zset stash area
-- KEYS[2]: list queue
-- ARGV[1]: stash区截止时间戳
-- ARGV[2]: 当前时间戳
-- ARGV[3]: 内容

-- 清理stash区，将其中超时的消息放入到发送队列中
local stash = redis.call('ZRANGEBYSCORE', KEYS[1], 0, ARGV[1]);

if( #stash > 0) 
then
    -- return #stash
    redis.call('RPUSH', KEYS[2], unpack(stash));
    redis.call('ZREMRANGEBYSCORE', KEYS[1], 0, ARGV[1]);
end

-- 将新的消息加入到stash区
return redis.call('ZADD', KEYS[1], ARGV[2], ARGV[3]);

